Java基础知识(一)
Java基础知识
Java是一门面向对象语言,支持多线程编程;通过使用更为简单的引用来进行内存关系的匹配,而不是复杂的指针;Java提供垃圾自动回收机制,能更好地处理垃圾空间;可以实现多平台的移植。
第一个Java程序
- 运行Java程序的步骤
javac xx.java
:对Java程序进行编译,生成字节码文件xx.class
。
java xx
:对Java程序进行解释。 - Java程序的核心单元—类
类的声明方式有两种:
public class class_name {}
:该声明方式声明的java文件,文件名必须与类名一致,一个类文件中只允许使用一次该声明。
class class_name {}
:一个java文件可以多次使用该声明(不建议如此操作),但编译后会生成多个class文件。 - 第一个Java程序:Hello World
package com.java.demo; // 包名
public class HelloWorld { // 类
public static void main(String[] args) { // 主方法
System.out.println("Hello World"); // 方法体
}
}
Java程序都是从主方法开始执行的.System.out.println()
将内容输出后换行。
CLASSPATH环境属性
PATH和CLASSPTH的区别:PATH
是操作系统路径,定义了所有可执行程序的路径;CLASSPATH
是Java解释类文件时的加载路径,当java
命令运行时,JVM通过CLASSPATH属性设置的路径,加载所需要的类。
配置CLASSPATH时,一定要定义一个“.”,表示在当前所在目录进行类的加载。
注释
// 注释内容
: 单行注释
/* 注释内容 */
: 多行注释
/** 注释内容 */
:文档注释
标识符与关键字
- 标识符
标识符是指Java程序中的类名、属性名、方法名等,其定义要求如下:(1)标识符由字母,数字,_,$组成,不能以数字开头,不能是Java中的关键字或保留字;
(2)标识符应尽量有意义,可见名知意。
(3)Java标识符可以是中文,但不建议使用中文命名标识符。 - 关键字
Java中有两个未使用的关键字goto
和const
;JDK1.4之后增加了assert
关键字;JDK1.5之后增加了enum
关键字。
Java数据类型
- Java数据类型分为两大类:
基础数据类型
和引用数据类型
两者的区别在于基础数据类型不需要进行内存分配,而引用数据类型需要进行内存分配。
基本数据类型:
|-数值型:
|-整型:byte
、short
、int
、long
; →默认值:0
;
|-浮点型:float
、double
; →默认值:0.0
|-字符型:char
; →默认值:‘\u0000’
|-布尔型:boolean
; →默认值:false
|-引用数据类型:数组、类、接口等。 →默认值:null
- 数据类型的选择原则
(1)整数用
int
,小数用double
;
(2)描述日期时间或内存大小,用long
;
(3)实现内容传递或编码转换用byte
;
(4)逻辑控制用boolean
;
(5)避免中文乱码用char
。
整型
- 数字常量属于
int
型数据,如数字30。
常量与变量的区别在于:常量的内容是固定的,变量的内容是可变的。范例–定义int型变量:
package com.java.demo;
public class Demo {
public static void main(String[] args) {
// 一个变量名在同一块代码中只允许声明一次
// 变量赋值语法:value_type value_name = value ;
int num = 10;
num = num * 2;
System.out.println(num);
}
}
- 每个数据类型都有其对应的存储范围
package com.java.demo;
public class Demo {
public static void main(String[] args) {
int max = Integer.MAX_VALUE; // int型数据的最大值
int min = Integer.MIN_VALUE; // int型数据的最小值
System.out.println(max); // 2147483647
System.out.println(max + 1); // -2147483648
System.out.println(min); // -2147483648
System.out.println(min - 1); // 2147483647
System.out.println(min - 2); // 2147483646
}
}
当数据超过int
型数据的保存范围时,数值会按照循环的形式出现,即(最大值+1)变为最小值,再+1变为第二小的最小值,以此类推。这是因为数据是按照二进制进行的,第一位是符号位,而其他31位是数据位。这种现象称为数据溢出
,解决方法是扩大数据范围:
package com.java.demo;
public class Demo {
public static void main(String[] args) {
int max = Integer.MAX_VALUE;
int min = Integer.MIN_VALUE;
// int变量 + long变量 = long变量,扩大了数据的范围
System.out.println(max + 1L); // 2147483648
System.out.println(min - (long)1); // -2147483649
System.out.println((long)min - 2); // -2147483650
}
}
- 数据类型的转换规律
范围小的数据类型与范围大的数据类型计算时,自动转换为范围大的所数据类型;
范围大的数据类型只能通过强制转换变为范围小的数据类型。
常量进行强制转换,可通过使用常量标记(如L,l
可将int
型常量变为long
型)或使用(数据类型)常量
。范例–强制转换:
package com.java.demo;
public class Demo {
public static void main(String[] args) {
// 1000是int型,使用long型变量接收,发生自动转换
long num = 1000;
// long型变为int型,强制转换
int x = (int) num;
System.out.println(x); // 1000
}
}
当进行强制转换的数值超出范围小的数据类型的范围时,依然会发生数据溢出。
package com.java.demo;
public class Demo {
public static void main(String[] args) {
// 2147483650L是long型数据,超出int型的范围
long num = 2147483650L ;
int x = (int) num;
System.out.println(x); // -2147483646,数据溢出
}
}
byte
型数据的取值范围为-128~127
,当整数数值在这个范围内时,会自动转型;超出byte
范围时会发生数据溢出。
4. 注意点
变量声明时应设置具体数值,不使用默认值。在方法中定义的变量,其默认值是无效的。
package com.java.demo;
public class Demo {
public static void main(String[] args) {
// 未给变量赋值
int num;
// 报错,未初始化变量,无法使用该变量
System.out.println(num);
}
}
浮点型
- Java中浮点数属于
double
型(double
型是保存范围最广的类型)。
package com.java.demo;
public class Demo {
public static void main(String[] args) {
double num = 10.2; // 10.2是小数,属于double型
// double型 * int型 = double型
System.out.println(num * 2); // 20.4
}
}
所以使用float
数据须将double强制转换为float型
:
package com.java.demo;
public class Demo {
public static void main(String[] args) {
float fA = 10.2F; // 强制转型方式一
float fB = (float) 10.2; // 强制转型方式二
System.out.println(fA); // 10.2
System.out.println(fB); // 10.2
System.out.println(fA * fB); // 104.03999,该bug无法解决
}
}
开发过程中要考虑到整型数据不保留小数位
:
package com.java.demo;
public class Demo {
public static void main(String[] args) {
int x = 5;
int y = 9;
System.out.println(y / x); // 1
}
}
因为int型/int型=int型
,不保留小数位,所以要取得正确的计算结果,需要将其中一个整型变为浮点型:
package com.java.demo;
public class Demo {
public static void main(String[] args) {
int x = 5;
int y = 9;
System.out.println(y / (double) x); // 1.8
}
}
字符型
- byte
byte
是字节,1字符=2字节。Java使用十六进制UNICODE
编码,可以保存任意符号,并且考虑到与其他语言的结合,包含了ASCII码的部分编码,以实现无缝衔接。 - 字符使用单引号
'
声明,一对单引号只能保存一位字符。
package com.java.demo;
public class Demo {
public static void main(String[] args) {
char c = 'A';
int num = c; // char型可以自动转换为int型
System.out.println(c);
System.out.println(num); // 65,是A的ASCII码值
}
}
- 编码:
'A'
(65)~'Z'
(90);'a'
(97)~'z'
(122);'0'
(48)~'9'
(57),可利用A和a的编码差为32,实现字母大小写转换:
package com.java.demo;
public class Demo {
public static void main(String[] args) {
char c = 'A';
int num = c; // char型变为int型才能进行四则运算
num = num + 32; // 大写与小写编码值差为32
c = (char) num; // int型只能强制转换为char型
System.out.println(c); // a
}
}
- 传统编程语言字符只能保存英文标记,但UNICODE可以保存任何文字包括中文。
package com.java.demo;
public class Demo {
public static void main(String[] args) {
char c = '游';
int num = c;
System.out.println(num); // 28216
}
}
由于Java保存中文很方便,因此处理断句时,字符数据很有用,其他时候基本用不到。
布尔型
布尔型返回逻辑结果,只保存两种数据:true
和false
,主要用于逻辑控制:
package com.java.demo;
public class Demo {
public static void main(String[] args) {
boolean flag = false;
// if (布尔值){满足条件时的操作}
if (!flag) {
System.out.println("Hello World !");
}
}
}
String型
- String型
String
属于引用数据类型(是类,Java中类名称首字母大写),表示字符串,即多个字符的集合,使用双引号""
声明。
package com.java.demo;
public class Demo {
public static void main(String[] args) {
String str = "Hello World !"; // str为字符串变量
System.out.println(str);
// "Hello World !"为字符串常量
System.out.println("Hello World !");
}
}
+
可实现字符串连接
package com.java.demo;
public class Demo {
public static void main(String[] args) {
String str = "Hello";
str = str + " World !";
System.out.println(str);
}
}
当四则运算与字符串连接同时存在时:
package com.java.demo;
public class Demo {
public static void main(String[] args) {
int numA = 100;
double numB = 99.9;
String str = "加法计算:" + numA + numB;
System.out.println(str); // 加法计算:10099.9
}
}
出现上述结果是因为小范围数据会自动转型为大范围数据,即String型+任意数据类型=String型
,然后进行字符串连接,可使用()来实现正确的运算:
package com.java.demo;
public class Demo {
public static void main(String[] args) {
int numA = 100;
double numB = 99.9;
String str = "加法计算:" + (numA + numB);
System.out.println(str); // 加法计算:199.9
}
}
- Java支持转义字符,
例如:换行\n
、制表符\t
、反斜杠\\
、双引号\"
、单引号\'
:
package com.java.demo;
public class Demo {
public static void main(String[] args) {
String str = "Hello \"World\" \nHello MLDN";
System.out.println(str);
/**
* Hello "World"
* Hello MLDN
*/
}
}
This blog is under a CC BY-NC-SA 3.0 Unported License
本文链接:http://yov.oschina.io/article/Java/Java Base/Java基础知识(一)/